// 在TS中如果一个函数没有任何的返回值，那么返回值的类型就是void类型
// 如果不写，显示的也是void类型。
// 如果返回值是void类型，那么我们也可以返回undefined
function sum(num1: number, num2: number): void {
  console.log(num1 + num2)
  return undefined
}

// 应用场景：用来指定函数类型的返回值是void
type LyricInfoType = {
  time: number,
  text: string
}

// parseLyric函数的数据类型（lyric: string) => LyricInfoType[]
function parseLyric(lyric: string): LyricInfoType[] {
  const lyricInfos: LyricInfoType[] = []
  return lyricInfos
}

// 函数/对象
type FooType = () => void
const foo: FooType = () => {

}

// 举个例子：
type ExecFnType = (...args: any[]) => void

function delayFn(fn: ExecFnType) {
  setTimeout(() => {
    fn("why", 18)
  }, 1000)
}

delayFn((name, age) => {
  console.log(name, age)
})


////////////////

const names = ["abc","fdsa", "fds"]

// 参数和返回值都是推导类型，此处的void没有明确要求，也可以返回123

names.forEach((item:string, index:number, arr:string[]) => {
  return 123
})
export {}